#******************************************************************************
#
# Makefile - Rules for building the FreeRTOS Library.
#
#  Copyright (C) 2014 Texas Instruments Incorporated - http:#www.ti.com/
#
#
#  Redistribution and use in source and binary forms, with or without
#  modification, are permitted provided that the following conditions
#  are met:
#
#    Redistributions of source code must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
#
#    Redistributions in binary form must reproduce the above copyright
#    notice, this list of conditions and the following disclaimer in the
#    documentation and/or other materials provided with the
#    distribution.
#
#    Neither the name of Texas Instruments Incorporated nor the names of
#    its contributors may be used to endorse or promote products derived
#    from this software without specific prior written permission.
#
#  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
#  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
#  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
#  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
#  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
#  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
#  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
#  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
#  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
#  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
#  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
#*****************************************************************************

include ../../../tools/gcc_scripts/makedefs_ti_rtos


#******************************************************************************
#
# Object File directory.
#
#******************************************************************************
OBJDIR?=obj

#******************************************************************************
#
#OutPut directory
#
#******************************************************************************
BINDIR?=exe

###### recursive wildcard function #######
rwildcard=$(wildcard $1$2) $(foreach d, $(wildcard $1*),$(call rwildcard,$d/,$2))

#
# Where to find source files that do not live in this directory.
#
VPATH=..
VPATH+=../../drivers
VPATH+=../../common


###### returns all sources in examples directory ######
SOURCES   = $(wildcard *.c)
ASM_FILES = $(wildcard *.asm)
SOURCES += ../../common/network_if.c
SOURCES += ../../common/gpio_if.c
SOURCES += ../../common/uart_if.c
SOURCES += ../../common/timer_if.c
SOURCES += ../../common/udma_if.c
SOURCES += ../main.c
SOURCES += ../pinmux.c

###### returns all directories except one generated by configuro ######
DIRS = $(filter-out $(NAME)/, $(wildcard */))

###### recursively find all sources in every returned directory ######
SOURCES   += $(foreach d, $(DIRS),$(call rwildcard,$(d),*.c))
ASM_FILES += $(foreach d, $(DIRS),$(call rwildcard,$(d),*.asm))


###### return list of .obj's from all .c's ######
OBJECTS  = $(patsubst %.c, ${OBJDIR}/network_if.obj, ../../common/network_if.c)
OBJECTS  += $(patsubst %.c, ${OBJDIR}/gpio_if.obj, ../../common/gpio_if.c)
OBJECTS  += $(patsubst %.c, ${OBJDIR}/uart_if.obj, ../../common/uart_if.c)
OBJECTS  += $(patsubst %.c, ${OBJDIR}/timer_if.obj, ../../common/timer_if.c)
OBJECTS  += $(patsubst %.c, ${OBJDIR}/udma_if.obj, ../../common/udma_if.c)
OBJECTS  += $(patsubst %.c, ${OBJDIR}/main.obj, ../main.c)
OBJECTS  += $(patsubst %.c, ${OBJDIR}/pinmux.obj, ../pinmux.c)

###### return example's name #######
NAME = get_time

###### Extend compiler options here ######

CFLAGS += -I$(CCWARE_INSTALLATION_DIR)/.. -I$(CCWARE_INSTALLATION_DIR)/../inc -I$(CCWARE_INSTALLATION_DIR)/../driverlib -I$(CCWARE_INSTALLATION_DIR)/../oslib -I$(CCWARE_INSTALLATION_DIR)/../simplelink -I$(CCWARE_INSTALLATION_DIR)/../simplelink/Include -I$(CCWARE_INSTALLATION_DIR)/../oslib -I$(CCWARE_INSTALLATION_DIR)/../example/common -DUSE_TIRTOS

OTHERPROJECT = $(CCWARE_INSTALLATION_DIR)/../ti_rtos/ti_rtos_config/GCC/configPkg
###### Extend linker options here ######
LFLAGS =  -mcpu=cortex-m4 -march=armv7e-m -mthumb -mfloat-abi=soft -nostartfiles -static -Wl,-Map,${BINDIR}/$(NAME).map -Wl,--gc-sections -Wl,-T,cc3200.lds -Wl,-T,$(OTHERPROJECT)/linker.cmd -lsimplelink -ldriver -ltirtos -lgcc -lc -lm -lrdimon -L$(CCWARE_INSTALLATION_DIR)/../oslib/gcc/exe -L$(CCWARE_INSTALLATION_DIR)/../driverlib/gcc/exe -L$(CCWARE_INSTALLATION_DIR)/../simplelink/gcc/exe

.PRECIOUS: %/compiler.opt %/linker.cmd


#
# The default rule, which causes the driver library to be built.
#
all: ${OBJDIR} ${BINDIR}
all: ${BINDIR}/$(NAME).out

#
# The rule to clean out all the build products.
#
clean:
	@rm -rf ${OBJDIR} ${wildcard *~}
	@rm -rf ${BINDIR} ${wildcard *~}


#
# The rule to create the target directories.
#
${OBJDIR}:
	@mkdir -p ${OBJDIR}

${BINDIR}:
	@mkdir -p ${BINDIR}


${OBJDIR}/%.obj : %.c
${OBJDIR}/%.obj : %.asm


${OBJDIR}/%.obj: %.c
	@ echo Building $@
	@ $(CC)  $(CFLAGS) $<  -c @$(OTHERPROJECT)/compiler.opt -o $@ 

${OBJDIR}/%.obj: %.asm
	@ echo Building $@
	@ $(CC)  $(CFLAGS) $<  -c @$(OTHERPROJECT)/compiler.opt -o $@

${BINDIR}/$(NAME).out: $(OBJECTS)
	@ echo linking...
	@ echo $(OBJECTS) ....
	@ $(LNK) $(OBJECTS) $(LFLAGS) -o ${BINDIR}/$(NAME).out
	@ ${OBJCOPY} -O binary ${@} ${@:.out=.bin}

